package com.yc.cloud.admin.service;

import com.yc.cloud.admin.dto.RecordingConfig;
import com.yc.cloud.entity.HwCameraStorageStrategy;
import com.yc.cloud.entity.HwCameraTimeSlot;

/**
 * 存储策略解析服务接口
 *
 * @author kinggu
 * @since 2025-09-16
 */
public interface StorageStrategyResolver {

    /**
     * 获取摄像头的有效存储策略
     *
     * @param cameraId 摄像头ID
     * @return 有效的存储策略，如果没有返回null
     */
    HwCameraStorageStrategy getEffectiveStrategy(Long cameraId);

    /**
     * 获取摄像头当前时间的录制配置
     *
     * @param cameraId 摄像头ID
     * @return 录制配置信息
     */
    RecordingConfig getCurrentRecordingConfig(Long cameraId);

    /**
     * 查找策略在当前时间的活跃时间段
     *
     * @param strategyId 策略ID
     * @return 活跃的时间段，如果当前时间不在任何时间段内返回null
     */
    HwCameraTimeSlot findActiveTimeSlot(Long strategyId);

    /**
     * 获取全局默认策略
     *
     * @return 全局默认策略
     */
    HwCameraStorageStrategy getGlobalDefaultStrategy();

    /**
     * 检查时间段是否在指定时间内活跃
     *
     * @param timeSlot 时间段
     * @param checkTime 检查时间（LocalTime格式）
     * @param dayOfWeek 星期几（1-7）
     * @return 是否活跃
     */
    boolean isTimeSlotActive(HwCameraTimeSlot timeSlot, java.time.LocalTime checkTime, int dayOfWeek);
}